package com.owen.cyclic.barrier.simple6;

import com.owen.cyclic.barrier.simple5.MyRunnable5;

import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit;

/**
 *  示例6：重建规则
 *  示例5改造一下，员工0等待5秒超时之后，开吃了，打破了规则，先前等待中的及后面到达的都不按规则来了，都拿起筷子开吃。
 *  过了一会，导游重新告诉大家，要按规则来，然后重建了规则，大家都按规则来了。代码如下：
 *
 *  第一次规则被打乱了，过了一会儿导游重建了规则（cyclicBarrier.reset();）接着又重来了一次模拟吃饭的操作，正常了。
 */
public class Main6 {

    private static CyclicBarrier cyclicBarrier=new CyclicBarrier(10);

    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            new Thread(new MyRunnable6(cyclicBarrier,"员工"+i,i)).start();
        }

        // 等待15秒之后，充值，重建规则
        TimeUnit.SECONDS.sleep(15);
        cyclicBarrier.reset();
        MyRunnable6.guize=true;
        System.out.println("------------大家太皮了，请大家按规则来-----------");
        for (int i = 0; i < 10; i++) {
            new Thread(new MyRunnable6(cyclicBarrier,"员工"+i,i)).start();
        }
    }

}
